www.gusucode.com > Reach 程序工具箱matlab源码 > Reach/Coreach Tool/src/findWritesInScopeRCR.m

    function writes = findWritesInScopeRCR(obj, block, flag)
% FINDWRITESINSCOPE Find all the Data Store Writes associated with a Data
% Store Read block.
%
% 	Inputs:
% 		obj    The reachcoreach object containing data store mappings
%       block  The read block of interest
%       flag   The flag indicating whether shadowing data stores are in the
%              model
%
% 	Outputs:
%		froms    The data store write corresponding to input "block"

    if isempty(block)
        writes = {};
        return
    end

    % Ensure input is a valid Data Store Read block
    try
        assert(strcmp(get_param(block, 'type'), 'block'));
        blockType = get_param(block, 'BlockType');
        assert(strcmp(blockType, 'DataStoreRead'));
    catch
        disp(['Error using ' mfilename ':' char(10) ...
            ' Block parameter is not a Data Store Read block.' char(10)])
        help(mfilename)
        writes = {};
        return
    end

    dataStoreName = get_param(block, 'DataStoreName');
    
    if flag
        try
            writes = obj.dswMap(dataStoreName);
        catch
            writes = {};
        end
        return
    end
    
    memBlock = findDataStoreMemoryRCR(obj, block, flag);
    writes = findReadWritesInScopeRCR(obj, memBlock, flag);
    blocksToExclude = obj.dsrMap(dataStoreName);
    writes = setdiff(writes, blocksToExclude);
end